/*************************************
 **   @author: 野狼上校               **
 **   @create: 2024-04-03 12:11      **
 **   @version: 1.0                  **
 *************************************/
/**  axios的二次封装 **/

import axios, {InternalAxiosRequestConfig} from "axios";
import {userStore} from "@/pinia/auth/userPinia.ts";

/*创建请求*/
const instance = axios.create({
    baseURL: '/api',     //所有请求的前缀部分
    timeout: 5000,    //请求超时(毫秒)
    withCredentials: true,      //异步请求携带cookie
    headers: {
        //设置后端需要传参的数据类型
        'Content-type': 'application/json',
        // config.headers['Accept-Language'] = 'zh-CN',
        // config.headers['token'] = userStore.token // 可以全局设置接口请求header中带token
    },
});

/**
 * 请求拦截器
 */
instance.interceptors.request.use(
    (config: InternalAxiosRequestConfig<any>) => {
        // 可以全局设置接口请求header中带token
        config.headers['token'] = userStore().token;
        return config;
    },
    (error: InternalAxiosRequestConfig<any>) => {
        // 对请求错误做些什么
        // console.log(error);
        return Promise.reject("请求错误:" + error);
    }
);

/**
 * 响应拦截器
 */
instance.interceptors.response.use(
    (response) => {
        const status = response.status;
        if (status === 200) { // 请求成功
            return Promise.resolve(response.data);
        } else {
            console.log("response: " + response.status)
            return Promise.reject("响应出错")
        }
    }, () => {
        return Promise.reject("响应出错");
    });

// 定义统一响应数据的格式
export interface RespResult {
    code: number;   // 状态码
    message: string; // 信息
    data: any;       // 数据
}

export default instance;